Skip to content
标签
spring
字数
1230 字
阅读时间
7 分钟

一、整合dao层

  1. 添加jar包依赖

    1、mybatis的jar包
    2、Mysql数据库驱动
    3、数据库连接池
    4、Mybatis和spring的整合包。
    5、Spring的jar包
  2. 配置文件

    mybatis的配置文件:SqlMapConfig.xml

    xml
    <?xmlversion="1.0"encoding="UTF-8"?>
    <!DOCTYPEconfiguration
    		PUBLIC"-//mybatis.org//DTD Config 3.0//EN"
    		"http://mybatis.org/dtd/mybatis-3-config.dtd">
    <configuration>
        <typeAliases>
    		<!-- 批量定义别名 -->
     	<package name="com.yh.bean"/>
    	</typeAliases>
    </configuration>

    Spring的配置文件:applicationContext-dao.xml

    xml
    <?xmlversion="1.0"encoding="UTF-8"?>
    <beansxmlns="http://www.springframework.org/schema/beans"
    	xmlns:context="http://www.springframework.org/schema/context"xmlns:p="http://www.springframework.org/schema/p"
    	xmlns:aop="http://www.springframework.org/schema/aop"xmlns:tx="http://www.springframework.org/schema/tx"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
    	http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
    	http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
    	http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd">
    
    	<!-- 数据库连接池 -->
    	<!-- 加载配置文件 -->
    	<context:property-placeholderlocation="classpath:properties/*.properties"/>
    	<!-- 数据库连接池 -->
    	<beanid="dataSource"class="com.alibaba.druid.pool.DruidDataSource"
    		destroy-method="close">
    		<propertyname="url"value="${jdbc.url}"/>
    		<propertyname="username"value="${jdbc.username}"/>
    		<propertyname="password"value="${jdbc.password}"/>
    		<propertyname="driverClassName"value="${jdbc.driver}"/>
    		<propertyname="maxActive"value="10"/>
    		<propertyname="minIdle"value="5"/>
    	</bean>
    	<!-- 让spring管理sqlsessionfactory 使用mybatis和spring整合包中的 -->
    	<beanid="sqlSessionFactory"class="org.mybatis.spring.SqlSessionFactoryBean">
    		<!-- 数据库连接池 -->
    		<propertyname="dataSource"ref="dataSource"/>
    		<!-- 加载mybatis的全局配置文件 -->
    		<propertyname="configLocation"value="classpath:mybatis/SqlMapConfig.xml"/>
    	</bean>
    	<beanclass="org.mybatis.spring.mapper.MapperScannerConfigurer">
    		<propertyname="basePackage"value="com.hg.mapper"/>
     </bean>
    </beans>

    db.properties

    properties
    dbc.driver=com.mysql.jdbc.Driver
    jdbc.url=jdbc:mysql://localhost:3306/hg?characterEncoding=utf-8
    jdbc.username=root
    jdbc.password=root

二、整合Service层

  1. 引入springjar包

  2. 配置文件applicationContext-service.xml

    xml
    <?xmlversion="1.0"encoding="UTF-8"?>
    <beansxmlns="http://www.springframework.org/schema/beans"
    	xmlns:context="http://www.springframework.org/schema/context"xmlns:p="http://www.springframework.org/schema/p"
    	xmlns:aop="http://www.springframework.org/schema/aop"xmlns:tx="http://www.springframework.org/schema/tx"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
    	http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
    	http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
    	http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd">
    
    	<!-- 包扫描器,扫描带@Service注解的类 -->
    	<context:component-scan base-package="com.hg.service"></context:component-scan>
    </beans>
  3. 事务配置文件:applicationContext-trans.xml

    xml
    <?xmlversion="1.0"encoding="UTF-8"?>
    <beansxmlns="http://www.springframework.org/schema/beans"
    	xmlns:context="http://www.springframework.org/schema/context"xmlns:p="http://www.springframework.org/schema/p"
    	xmlns:aop="http://www.springframework.org/schema/aop"xmlns:tx="http://www.springframework.org/schema/tx"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
    	http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
    	http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
    	http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd">
    	<!-- 事务管理器 -->
    	<beanid="transactionManager"
    		class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    		<!-- 数据源 -->
    		<propertyname="dataSource"ref="dataSource"/>
    	</bean>
    	<!-- 通知 -->
    	<tx:adviceid="txAdvice"transaction-manager="transactionManager">
    		<tx:attributes>
    			<!-- 传播行为 -->
    			<tx:methodname="save*"propagation="REQUIRED"/>
    			<tx:methodname="insert*"propagation="REQUIRED"/>
    			<tx:methodname="add*"propagation="REQUIRED"/>
    			<tx:methodname="create*"propagation="REQUIRED"/>
    			<tx:methodname="delete*"propagation="REQUIRED"/>
    			<tx:methodname="update*"propagation="REQUIRED"/>
    			<tx:methodname="find*"propagation="SUPPORTS"read-only="true"/>
    			<tx:methodname="select*"propagation="SUPPORTS"read-only="true"/>
    			<tx:methodname="get*"propagation="SUPPORTS"read-only="true"/>
    		</tx:attributes>
    	</tx:advice>
    	<!-- 切面 -->
    	<aop:config>
    		<aop:advisoradvice-ref="txAdvice"
    			pointcut="execution(* com.hg.service.*.*(..))"/>
    	</aop:config>
    </beans>
    REQUIRED 如果有事务,就在当前事务里执行,没有则开启新事务。必须在事务中执行。
    SUPPORTS当前有事务就在当前事务中执行,没有则不开启事务

三、Controller层

配置springmvc

xml
<?xmlversion="1.0"encoding="UTF-8"?>
<beansxmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:p="http://www.springframework.org/schema/p"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:mvc="http://www.springframework.org/schema/mvc"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

<!-- 配置包扫描器 -->
<context:component-scan base-package="com.hg.controller">
    <!--制定扫包规则,不扫描@Controller注解的JAVA类,其他的还是要扫描 --> 
    <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" />
</context:component-scan>
<!-- 配置注解驱动 -->
<mvc:annotation-driven/>
<!-- 视图解析器 -->
<bean
		class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix"value="/WEB-INF/jsp/"/>
		<property name="suffix"value=".jsp"/>
	</bean>
</beans>

四、Web.xml

xml
<?xmlversion="1.0"encoding="UTF-8"?>
<web-appxmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee"xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	id="hg"version="2.5">
	<display-name>hg-manager</display-name>
	<welcome-file-list>
		<welcome-file>index.html</welcome-file>
		<welcome-file>index.htm</welcome-file>
		<welcome-file>index.jsp</welcome-file>
		<welcome-file>default.html</welcome-file>
		<welcome-file>default.htm</welcome-file>
		<welcome-file>default.jsp</welcome-file>
	</welcome-file-list>
	<!-- 初始化spring容器 -->
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath:spring/applicationContext-*.xml</param-value>
	</context-param>
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>

	<!-- 解决post乱码 -->
	<filter>
		<filter-name>CharacterEncodingFilter</filter-name>
		<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
		<init-param>
			<param-name>encoding</param-name>
			<param-value>utf-8</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>CharacterEncodingFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>


	<!-- springmvc的前端控制器 -->
	<servlet>
		<servlet-name>hg-manager</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<!-- contextConfigLocation不是必须的, 如果不配置contextConfigLocation, springmvc的配置文件默认在:WEB-INF/servlet的name+"-servlet.xml" -->
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>classpath:spring/springmvc.xml</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>hg-manager</servlet-name>
		<url-pattern>/</url-pattern>
	</servlet-mapping>
</web-app>

<load-on-startup>1</load-on-startup>初始化tomcat web容器时,即初始化spring容器。否则第一次访问时才初始化。
<url-pattern>/</url-pattern>静态资源会被拦截。

五、配置事务

xml
<!-- 配置事务管理器 --> 
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> 
    <property name="dataSource" ref="dataSource"></property> 
</bean>
<!-- 配置事务的通知 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
    <tx:attributes> 
        <tx:method name="*" propagation="REQUIRED" read-only="false"/> 
        <tx:method name="find*" propagation="SUPPORTS" read-only="true"/>
    </tx:attributes> 
</tx:advice>
<!-- 配置aop --> 
<aop:config> 
    <!-- 配置切入点表达式 --> 
    <aop:pointcut expression="execution(* com.itheima.service.impl.*.*(..))" id="pt1"/>
    <!-- 建立通知和切入点表达式的关系 --> 
    <aop:advisor advice-ref="txAdvice" pointcut-ref="pt1"/> 
</aop:config>

六、依赖

xml
<modelVersion>4.0.0</modelVersion>
<groupId>com.itheima</groupId>
<artifactId>ssm</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<properties>
	<spring.version>5.0.2.RELEASE</spring.version>
	<slf4j.version>1.6.6</slf4j.version>
	<log4j.version>1.2.12</log4j.version>
	<shiro.version>1.2.3</shiro.version>
	<mysql.version>5.1.6</mysql.version>
	<mybatis.version>3.4.5</mybatis.version>
</properties>
<dependencies>
	<!-- spring -->
	<dependency>
		<groupId>org.aspectj</groupId>
		<artifactId>aspectjweaver</artifactId>
		<version>1.6.8</version>
	</dependency>
	<dependency>
        <groupId>org.springframework</groupId> 	
        <artifactId>spring-aop</artifactId>
        <version>${spring.version}</version> 
    </dependency>
    <dependency> 
        <groupId>org.springframework</groupId> 
        <artifactId>spring-context</artifactId>
        <version>${spring.version}</version>
    </dependency> 
    <dependency> 
        <groupId>org.springframework</groupId>
        <artifactId>spring-context-support</artifactId> 
        <version>${spring.version}</version>
    </dependency> 
    <dependency>
        <groupId>org.springframework</groupId> 
        <artifactId>spring-web</artifactId> 
        <version>${spring.version}</version> 
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId> 
        <artifactId>spring-orm</artifactId> 
        <version>${spring.version}</version> 
    </dependency>
    <dependency> 
        <groupId>org.springframework</groupId> 
        <artifactId>spring-beans</artifactId> 
        <version>${spring.version}</version> 
    </dependency>
    <dependency> 
        <groupId>org.springframework</groupId> 
        <artifactId>spring-core</artifactId> 
        <version>${spring.version}</version> 
    </dependency> 
    <dependency> 
        <groupId>org.springframework</groupId> 
        <artifactId>spring-test</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency> 
        <groupId>org.springframework</groupId> 
        <artifactId>spring-webmvc</artifactId> 
        <version>${spring.version}</version>
    </dependency> 
    <dependency> 
        <groupId>org.springframework</groupId> 
        <artifactId>spring-tx</artifactId> 
        <version>${spring.version}</version> 
    </dependency> 
    <dependency> 
        <groupId>junit</groupId> 
        <artifactId>junit</artifactId>
        <version>4.12</version>
        <scope>test</scope> 
    </dependency> 
    <dependency> 
        <groupId>mysql</groupId> 
        <artifactId>mysql-connector-java</artifactId> 
        <version>${mysql.version}</version> 
    </dependency>
    <dependency> 
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId> 
        <version>2.5</version> 
        <scope>provided</scope>
    </dependency>
    <dependency> 
        <groupId>javax.servlet.jsp</groupId> 
        <artifactId>jsp-api</artifactId> 
        <version>2.0</version> 
        <scope>provided</scope>
    </dependency> 
    <dependency> 
        <groupId>jstl</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
    </dependency>
    <!-- log start --> 
    <dependency> 
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>${log4j.version}</version>
    </dependency> 
    <dependency> 
        <groupId>org.slf4j</groupId> 
        <artifactId>slf4j-api</artifactId> 
        <version>${slf4j.version}</version> 
    </dependency> 
    <dependency>
        <groupId>org.slf4j</groupId> 
        <artifactId>slf4j-log4j12</artifactId> 
        <version>${slf4j.version}</version> 
    </dependency>
    <!-- log end --> 
    <dependency> 
        <groupId>org.mybatis</groupId> 
        <artifactId>mybatis</artifactId> 
        <version>${mybatis.version}</version> 
    </dependency>
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis-spring</artifactId> 
        <version>1.3.0</version>
    </dependency>
    <dependency>
        <groupId>c3p0</groupId> 
        <artifactId>c3p0</artifactId> 
        <version>0.9.1.2</version> 
        <type>jar</type> 
        <scope>compile</scope> 
    </dependency> 
</dependencies>
<build> 
    <finalName>ssm</finalName> 
    <pluginManagement>
        <plugins> 
            <plugin> 
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.2</version> 
                <configuration> 
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding> 
                    <showWarnings>true</showWarnings> 
                </configuration> 
            </plugin>
        </plugins> 
    </pluginManagement>
</build> 
<modules>
    <module>ssm_domain</module>
    <module>ssm_dao</module>
    <module>ssm_service</module> 
    <module>ssm_web</module> 
</modules>